import { defineStore } from 'pinia'
import { ref } from 'vue'

// 使用 defineStore 定义一个名为 userStore 的存储
export const userStore = defineStore("user", () => {
    // 创建一个存储用户信息的响应式对象，初始为空
    let userInfo = ref({})
    // 创建一个存储用户登录状态的响应式布尔值，初始为 false
    let isLogin = ref(false)
    // 创建一个存储用户当前位置的响应式对象，包含初始经纬度
    let currentPos = ref({
        // 根据自己所在位置更改经纬度
        latitude: 34.343207,
        longitude: 108.939645
    })
    // 创建一个存储是否有位置信息的响应式布尔值，初始为 false
    let hasPos = ref(false)


    // 设置用户位置的函数，接收纬度和经度作为参数
    function setPos(lat, lon) {
        // 更新 currentPos 的纬度值
        currentPos.value.latitude = lat
        // 更新 currentPos 的经度值
        currentPos.value.longitude = lon
        // 将 hasPos 标记为 true，表示已经有位置信息
        hasPos.value = true
        // 打印更新后的位置信息
        console.log(currentPos.value)
    }
    // 用户注册或登录时添加用户信息的函数，接收名称、密码和电话作为参数
    function addUserInfo(name, password, phone) {
        // 设置用户信息中的名称
        userInfo.value.name = name;
        // 设置用户信息中的密码
        userInfo.value.password = password;
        // 设置用户信息中的电话
        userInfo.value.phone = phone;
        // 将登录状态标记为 true
        isLogin.value = true;
        // 可在此处添加更多自定义逻辑
    }
    // 清除用户登录状态和信息的函数
    function clearUserInfo() {
        // 清空用户信息对象
        userInfo.value = {};
        // 将登录状态标记为 false
        isLogin.value = false;
        // 原代码中存在问题，未定义 token，可根据需要添加相应处理
        // this.token = ""; 
    }

    // 将存储的状态和方法导出，以便在组件中使用
    return {
        userInfo,
        isLogin,
        addUserInfo,
        clearUserInfo,
        currentPos,
        setPos,
        hasPos
    }
})